﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;

using System.Runtime.InteropServices;
using System.Reflection;
using Microsoft.Win32;
//using namespace System::Runtime::InteropServices;

namespace InternetBar
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Bind();
        }
        //int d=0;


        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            //怎样判断是否开启了一个登陆窗体？
            //salesFrom.StartPosition = FormStartPosition.CenterScreen; 

            MessageBox.Show("你去点击登录按钮吧！！！");
            
            
        }
            
        void Bind()
        {
            //int iDistance=1;
            //int speed = 2;

            label1.Text = Info.Name;

            //label1.ForeColor.IsKnownColor=

            ////得到计算机屏幕的工作区域   
            //Rectangle ssWorkArea = Screen.GetWorkingArea(this);
            //label1.Location = new Point(ssWorkArea.Width - iDistance,label1.Location.Y);
            ////显示标签   
            //label1.Visible = true;
            ////   增加2个象素点,你可以通过修改speed的值来改变标签的移动速度   
            //iDistance += speed;
            ////   如果标签已经走出屏幕，则把标签的位置重定位到屏幕的右边   
            //if (label1.Location.X <= -(label1.Width))
            //{
            //    //Reset   the   distance   to   0.   
            //    iDistance = 0;
            //    //判断标签的位置是否在顶部，如果在，则重定位到中部   
            //    if (label1.Location.Y == 0)
            //    {
            //        label1.Location = new Point(label1.Location.X, (ssWorkArea.Height / 2));
            //    }
            //    //判断标签的位置是否在中部，如果在，则重定位到底部   
            //    else if (label1.Location.Y == ssWorkArea.Height / 2)
            //    {
            //        label1.Location = new Point(label1.Location.X, ssWorkArea.Height - label1.Height);
            //    }
            //    //重定位到顶部   
            //    else
            //        label1.Location = new Point(label1.Location.X, 0);
            //}  
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
                Form3 f = new Form3();
                f.f1 = this;
                f.Show();
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {

            if(e.KeyCode==Keys.F4&&e.Alt)
            {
                e.Handled = true;
            }

            if(e.KeyCode==Keys.Tab&&e.Alt)
            {
                e.Handled = true;
            }
            if(e.KeyCode==Keys.Delete &&e.Control&&e.Alt)
            {
                e.Handled = true;
            }

            ////这样做是不行的
            //if((e.KeyCode==Keys.Delete)&&(e.Alt==true)&&(e.Control==true))
            //{
            //    e.Handled = true;
            //}
            //if(e.KeyCode==Keys.Alt)
            //{
            //    e.Handled=true;
            //}

            //关于如何屏蔽ctrl+alt+F4，需要改动系统的Dll文件

            if (e.Modifiers == Keys.Alt)
            {
                e.Handled = true;
            }

            if(e.Control==true||e.Alt==true)
            {

                e.Handled = true;
                //MessageBox.Show("你按下了ctrl键了");
            }



        #region 运行屏保

    //        [DllImport("User32.dll")]
    //        public static extern bool BlockInput(bool enabled); //为真是假死
        

    //#region 运行本地屏保
    //  private void RunScreenSaver()
    //  {
    //  String[] screenSavers = Directory.GetFiles(Environment.SystemDirectory, "*.scr");
    //  if (screenSavers.Length > 0)
    //  {// 启动获取到的第一个屏保  
    //  Process.Start(new ProcessStartInfo(screenSavers[0]));
    //  }
    //      #endregion  
#endregion
        }





        #region   这个方法可以屏蔽alt+tab




        //委托 
        public delegate int HookProc(int nCode, int wParam, IntPtr lParam);
        static int hHook = 0;
        public const int WH_KEYBOARD_LL = 13;

        //LowLevel键盘截获，如果是WH_KEYBOARD＝2，并不能对系统键盘截取，Acrobat Reader会在你截取之前获得键盘。 
        HookProc KeyBoardHookProcedure;

        //键盘Hook结构函数 
        [StructLayout(LayoutKind.Sequential)]
        public class KeyBoardHookStruct
        {
            public int vkCode;
            public int scanCode;
            public int flags;
            public int time;
            public int dwExtraInfo;
        }
        #region DllImport
        //设置钩子 
        [DllImport("user32.dll")]
        public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        //抽掉钩子 
        public static extern bool UnhookWindowsHookEx(int idHook);
        [DllImport("user32.dll")]
        //调用下一个钩子 
        public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam);

        [DllImport("kernel32.dll")]
        public static extern int GetCurrentThreadId();

        [DllImport("kernel32.dll")]
        public static extern IntPtr GetModuleHandle(string name);

        public void Hook_Start()
        {
            // 安装键盘钩子 
            if (hHook == 0)
            {
                KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);

                //hHook = SetWindowsHookEx(2, 
                //            KeyBoardHookProcedure, 
                //          GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), GetCurrentThreadId()); 

                hHook = SetWindowsHookEx(WH_KEYBOARD_LL,
                          KeyBoardHookProcedure,
                        GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);

                //如果设置钩子失败. 
                if (hHook == 0)
                {
                    Hook_Clear();
                    //throw new Exception("设置Hook失败!"); 
                }
            }
        }

        //取消钩子事件 
        public void Hook_Clear()
        {
            bool retKeyboard = true;
            if (hHook != 0)
            {
                retKeyboard = UnhookWindowsHookEx(hHook);
                hHook = 0;
            }
            //如果去掉钩子失败. 
            if (!retKeyboard) throw new Exception("UnhookWindowsHookEx failed.");
        }

        //这里可以添加自己想要的信息处理 
        public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
        {
            if (nCode >= 0)
            {
                KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
                if (kbh.vkCode == 91)  // 截获左win(开始菜单键) 
                {
                    return 1;
                }
                if (kbh.vkCode == 92)// 截获右win
                {
                    return 1;
                }
                if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) //截获Ctrl+Esc 
                {
                    return 1;
                }
                if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt)  //截获alt+f4 
                {
                    return 1;
                }
                if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+tab 
                {
                    return 1;
                }
                if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) //截获Ctrl+Shift+Esc 
                {
                    return 1;
                }
                if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Alt)  //截获alt+空格 
                {
                    return 1;
                }
                if (kbh.vkCode == 241)                  //截获F1 
                {
                    return 1;
                }
                if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete)      //截获Ctrl+Alt+Delete 
                {
                    return 1;
                }
                //if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift)      //截获Ctrl+Shift 
                //{ 
                //    return 1; 
                //} 

                //if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt)  //截获Ctrl+Alt+空格 
                //{ 
                //    return 1; 
                //} 
            }
            return CallNextHookEx(hHook, nCode, wParam, lParam);
        }

        #endregion

        private void Form1_Load_1(object sender, EventArgs e)
        {
            Hook_Start();
            //通过修改注册表来屏蔽任务管理器 
            //try 
            //{ 
            //    RegistryKey r = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true); 
            //    r.SetValue("DisableTaskMgr", "1");  //屏蔽任务管理器 
            //} 
            //catch 
            //{ 
            //    RegistryKey r = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"); 
            //    r.SetValue("DisableTaskMgr", "0"); 
            //} 
        }

        private void Form1_FormClosing_1(object sender, FormClosingEventArgs e)
        {
            Hook_Clear();
        }

        private void Form1_MouseMove_1(object sender, MouseEventArgs e)
        {
            System.Windows.Forms.Cursor.Clip = new Rectangle(this.Location, this.Size); //控制鼠标在窗口范围内 
        }

        #endregion

        private void Form1_Load(object sender, EventArgs e)
        {

        }

    }

   #region 屏蔽键

    //public class User32
    //{
    //    [DllImport("user32.dll")]
    //    public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);
    //    [DllImport("user32.dll")]
    //    public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
    //}

    //public class Kernel32
    //{
    //    [DllImport("kernel32.dll")]
    //    public static extern int GlobalAddAtom(string Name);
    //    [DllImport("kernel32.dll")]
    //    public static extern int GlobalDeleteAtom(int atom);
    //    [DllImport("kernel32.dll")]
    //    public static extern IntPtr GlobalLock(IntPtr hMem);
    //    [DllImport("kernel32.dll")]
    //    public static extern bool GlobalUnlock(IntPtr hMem);
    //}

    //public enum Modifiers { MOD_ALT = 0x0001, MOD_CONTROL = 0x0002, MOD_SHIFT = 0x0004, MOD_WIN = 0x0008 }
    //public enum Msgs
    //{
    //    WM_NULL = 0x0000,
    //    WM_CREATE = 0x0001,
    //    WM_DESTROY = 0x0002,
    //    WM_MOVE = 0x0003,
    //    WM_SIZE = 0x0005,
    //    WM_ACTIVATE = 0x0006,
    //    WM_SETFOCUS = 0x0007,
    //    WM_KILLFOCUS = 0x0008,
    //    WM_ENABLE = 0x000A,
    //    WM_SETREDRAW = 0x000B,
    //    WM_SETTEXT = 0x000C,
    //    WM_GETTEXT = 0x000D,
    //    WM_GETTEXTLENGTH = 0x000E,
    //    WM_PAINT = 0x000F,
    //    WM_CLOSE = 0x0010,
    //    WM_QUERYENDSESSION = 0x0011,
    //    WM_QUIT = 0x0012,
    //    WM_QUERYOPEN = 0x0013,
    //    WM_ERASEBKGND = 0x0014,
    //    WM_SYSCOLORCHANGE = 0x0015,
    //    WM_ENDSESSION = 0x0016,
    //    WM_SHOWWINDOW = 0x0018,
    //    WM_WININICHANGE = 0x001A,
    //    WM_SETTINGCHANGE = 0x001A,
    //    WM_DEVMODECHANGE = 0x001B,
    //    WM_ACTIVATEAPP = 0x001C,
    //    WM_FONTCHANGE = 0x001D,
    //    WM_TIMECHANGE = 0x001E,
    //    WM_CANCELMODE = 0x001F,
    //    WM_SETCURSOR = 0x0020,
    //    WM_MOUSEACTIVATE = 0x0021,
    //    WM_CHILDACTIVATE = 0x0022,
    //    WM_QUEUESYNC = 0x0023,
    //    WM_GETMINMAXINFO = 0x0024,
    //    WM_PAINTICON = 0x0026,
    //    WM_ICONERASEBKGND = 0x0027,
    //    WM_NEXTDLGCTL = 0x0028,
    //    WM_SPOOLERSTATUS = 0x002A,
    //    WM_DRAWITEM = 0x002B,
    //    WM_MEASUREITEM = 0x002C,
    //    WM_DELETEITEM = 0x002D,
    //    WM_VKEYTOITEM = 0x002E,
    //    WM_CHARTOITEM = 0x002F,
    //    WM_SETFONT = 0x0030,
    //    WM_GETFONT = 0x0031,
    //    WM_SETHOTKEY = 0x0032,
    //    WM_GETHOTKEY = 0x0033,
    //    WM_QUERYDRAGICON = 0x0037,
    //    WM_COMPAREITEM = 0x0039,
    //    WM_GETOBJECT = 0x003D,
    //    WM_COMPACTING = 0x0041,
    //    WM_COMMNOTIFY = 0x0044,
    //    WM_WINDOWPOSCHANGING = 0x0046,
    //    WM_WINDOWPOSCHANGED = 0x0047,
    //    WM_POWER = 0x0048,
    //    WM_COPYDATA = 0x004A,
    //    WM_CANCELJOURNAL = 0x004B,
    //    WM_NOTIFY = 0x004E,
    //    WM_INPUTLANGCHANGEREQUEST = 0x0050,
    //    WM_INPUTLANGCHANGE = 0x0051,
    //    WM_TCARD = 0x0052,
    //    WM_HELP = 0x0053,
    //    WM_USERCHANGED = 0x0054,
    //    WM_NOTIFYFORMAT = 0x0055,
    //    WM_CONTEXTMENU = 0x007B,
    //    WM_STYLECHANGING = 0x007C,
    //    WM_STYLECHANGED = 0x007D,
    //    WM_DISPLAYCHANGE = 0x007E,
    //    WM_GETICON = 0x007F,
    //    WM_SETICON = 0x0080,
    //    WM_NCCREATE = 0x0081,
    //    WM_NCDESTROY = 0x0082,
    //    WM_NCCALCSIZE = 0x0083,
    //    WM_NCHITTEST = 0x0084,
    //    WM_NCPAINT = 0x0085,
    //    WM_NCACTIVATE = 0x0086,
    //    WM_GETDLGCODE = 0x0087,
    //    WM_SYNCPAINT = 0x0088,
    //    WM_NCMOUSEMOVE = 0x00A0,
    //    WM_NCLBUTTONDOWN = 0x00A1,
    //    WM_NCLBUTTONUP = 0x00A2,
    //    WM_NCLBUTTONDBLCLK = 0x00A3,
    //    WM_NCRBUTTONDOWN = 0x00A4,
    //    WM_NCRBUTTONUP = 0x00A5,
    //    WM_NCRBUTTONDBLCLK = 0x00A6,
    //    WM_NCMBUTTONDOWN = 0x00A7,
    //    WM_NCMBUTTONUP = 0x00A8,
    //    WM_NCMBUTTONDBLCLK = 0x00A9,
    //    WM_KEYDOWN = 0x0100,
    //    WM_KEYUP = 0x0101,
    //    WM_CHAR = 0x0102,
    //    WM_DEADCHAR = 0x0103,
    //    WM_SYSKEYDOWN = 0x0104,
    //    WM_SYSKEYUP = 0x0105,
    //    WM_SYSCHAR = 0x0106,
    //    WM_SYSDEADCHAR = 0x0107,
    //    WM_KEYLAST = 0x0108,
    //    WM_IME_STARTCOMPOSITION = 0x010D,
    //    WM_IME_ENDCOMPOSITION = 0x010E,
    //    WM_IME_COMPOSITION = 0x010F,
    //    WM_IME_KEYLAST = 0x010F,
    //    WM_INITDIALOG = 0x0110,
    //    WM_COMMAND = 0x0111,
    //    WM_SYSCOMMAND = 0x0112,
    //    WM_TIMER = 0x0113,
    //    WM_HSCROLL = 0x0114,
    //    WM_VSCROLL = 0x0115,
    //    WM_INITMENU = 0x0116,
    //    WM_INITMENUPOPUP = 0x0117,
    //    WM_MENUSELECT = 0x011F,
    //    WM_MENUCHAR = 0x0120,
    //    WM_ENTERIDLE = 0x0121,
    //    WM_MENURBUTTONUP = 0x0122,
    //    WM_MENUDRAG = 0x0123,
    //    WM_MENUGETOBJECT = 0x0124,
    //    WM_UNINITMENUPOPUP = 0x0125,
    //    WM_MENUCOMMAND = 0x0126,
    //    WM_CTLCOLORMSGBOX = 0x0132,
    //    WM_CTLCOLOREDIT = 0x0133,
    //    WM_CTLCOLORLISTBOX = 0x0134,
    //    WM_CTLCOLORBTN = 0x0135,
    //    WM_CTLCOLORDLG = 0x0136,
    //    WM_CTLCOLORSCROLLBAR = 0x0137,
    //    WM_CTLCOLORSTATIC = 0x0138,
    //    WM_MOUSEMOVE = 0x0200,
    //    WM_LBUTTONDOWN = 0x0201,
    //    WM_LBUTTONUP = 0x0202,
    //    WM_LBUTTONDBLCLK = 0x0203,
    //    WM_RBUTTONDOWN = 0x0204,
    //    WM_RBUTTONUP = 0x0205,
    //    WM_RBUTTONDBLCLK = 0x0206,
    //    WM_MBUTTONDOWN = 0x0207,
    //    WM_MBUTTONUP = 0x0208,
    //    WM_MBUTTONDBLCLK = 0x0209,
    //    WM_MOUSEWHEEL = 0x020A,
    //    WM_PARENTNOTIFY = 0x0210,
    //    WM_ENTERMENULOOP = 0x0211,
    //    WM_EXITMENULOOP = 0x0212,
    //    WM_NEXTMENU = 0x0213,
    //    WM_SIZING = 0x0214,
    //    WM_CAPTURECHANGED = 0x0215,
    //    WM_MOVING = 0x0216,
    //    WM_DEVICECHANGE = 0x0219,
    //    WM_MDICREATE = 0x0220,
    //    WM_MDIDESTROY = 0x0221,
    //    WM_MDIACTIVATE = 0x0222,
    //    WM_MDIRESTORE = 0x0223,
    //    WM_MDINEXT = 0x0224,
    //    WM_MDIMAXIMIZE = 0x0225,
    //    WM_MDITILE = 0x0226,
    //    WM_MDICASCADE = 0x0227,
    //    WM_MDIICONARRANGE = 0x0228,
    //    WM_MDIGETACTIVE = 0x0229,
    //    WM_MDISETMENU = 0x0230,
    //    WM_ENTERSIZEMOVE = 0x0231,
    //    WM_EXITSIZEMOVE = 0x0232,
    //    WM_DROPFILES = 0x0233,
    //    WM_MDIREFRESHMENU = 0x0234,
    //    WM_IME_SETCONTEXT = 0x0281,
    //    WM_IME_NOTIFY = 0x0282,
    //    WM_IME_CONTROL = 0x0283,
    //    WM_IME_COMPOSITIONFULL = 0x0284,
    //    WM_IME_SELECT = 0x0285,
    //    WM_IME_CHAR = 0x0286,
    //    WM_IME_REQUEST = 0x0288,
    //    WM_IME_KEYDOWN = 0x0290,
    //    WM_IME_KEYUP = 0x0291,
    //    WM_MOUSEHOVER = 0x02A1,
    //    WM_MOUSELEAVE = 0x02A3,
    //    WM_CUT = 0x0300,
    //    WM_COPY = 0x0301,
    //    WM_PASTE = 0x0302,
    //    WM_CLEAR = 0x0303,
    //    WM_UNDO = 0x0304,
    //    WM_RENDERFORMAT = 0x0305,
    //    WM_RENDERALLFORMATS = 0x0306,
    //    WM_DESTROYCLIPBOARD = 0x0307,
    //    WM_DRAWCLIPBOARD = 0x0308,
    //    WM_PAINTCLIPBOARD = 0x0309,
    //    WM_VSCROLLCLIPBOARD = 0x030A,
    //    WM_SIZECLIPBOARD = 0x030B,
    //    WM_ASKCBFORMATNAME = 0x030C,
    //    WM_CHANGECBCHAIN = 0x030D,
    //    WM_HSCROLLCLIPBOARD = 0x030E,
    //    WM_QUERYNEWPALETTE = 0x030F,
    //    WM_PALETTEISCHANGING = 0x0310,
    //    WM_PALETTECHANGED = 0x0311,
    //    WM_HOTKEY = 0x0312,
    //    WM_PRINT = 0x0317,
    //    WM_PRINTCLIENT = 0x0318,
    //    WM_HANDHELDFIRST = 0x0358,
    //    WM_HANDHELDLAST = 0x035F,
    //    WM_AFXFIRST = 0x0360,
    //    WM_AFXLAST = 0x037F,
    //    WM_PENWINFIRST = 0x0380,
    //    WM_PENWINLAST = 0x038F,
    //    WM_APP = 0x8000,
    //    WM_USER = 0x0400,
    //    WM_DDE_INITIATE = 0x03E0,
    //    WM_DDE_TERMINATE,
    //    WM_DDE_ADVISE,
    //    WM_DDE_UNADVISE,
    //    WM_DDE_ACK,
    //    WM_DDE_DATA,
    //    WM_DDE_REQUEST,
    //    WM_DDE_POKE,
    //    WM_DDE_EXECUTE
    //}


    ///// <summary> 
    ///// Defines a delegate for Message handling 
    ///// </summary> 
    //public delegate void MessageEventHandler(object Sender, ref Message msg, ref bool Handled);

    ///// <summary> 
    ///// Inherits from System.Windows.Form.NativeWindow. Provides an Event for Message handling 
    ///// </summary> 
    //public class NativeWindowWithEvent : System.Windows.Forms.NativeWindow
    //{
    //    public event MessageEventHandler ProcessMessage;
    //    protected override void WndProc(ref Message m)
    //    {
    //        if (ProcessMessage != null)
    //        {
    //            bool Handled = false;
    //            ProcessMessage(this, ref m, ref Handled);
    //            if (!Handled) base.WndProc(ref m);
    //        }
    //        else base.WndProc(ref m);
    //    }
    //}

    ///// <summary> 
    ///// Inherits from NativeWindowWithEvent and automatic creates/destroys of a dummy window 
    ///// </summary> 
    //public class DummyWindowWithEvent : NativeWindowWithEvent, IDisposable
    //{
    //    public DummyWindowWithEvent()
    //    {
    //        CreateParams parms = new CreateParams();
    //        this.CreateHandle(parms);
    //    }
    //    public void Dispose()
    //    {
    //        if (this.Handle != (IntPtr)0)
    //        {
    //            this.DestroyHandle();
    //        }
    //    }
    //}
    #endregion
}